class PessoaJuridica < ActiveRecord::Base

  belongs_to :empreendimento
  attr_readonly :empreendimento_id

  with_options(:dependent => :destroy) do |pj|
    pj.belongs_to :contato
    pj.belongs_to :escritorio, :class_name => 'Contato'
  end
  accepts_nested_attributes_for :contato
  accepts_nested_attributes_for :escritorio, :allow_destroy => true

  # Validations
  validates_presence_of  :empreendimento, :contato, :cnpj, :razao_social, :abertura_cnpj,
                         :registro_junta_comercial_data, :registro_junta_comercial_numero #,:historico
  validates_inclusion_of :objeto, :in => [true, false]
  validates_cnpj_of      :cnpj

  validate :municipio_na_area_de_atuacao, :if => :objeto?

  def municipio_na_area_de_atuacao
    municipio = contato.try(:municipio)
    return unless municipio
    return unless (municipio.area_ids & empreendimento.pleito.incentivo.area_ids).empty?
    errors.add_to_base "O empreendimento está fora da área de atuação da SUDAM (ver município)."
  end

  # Helpers
  def tipo
    objeto? ? "objeto" : "titular"
  end

  def cnpj=(value)
    self[:cnpj] = value.gsub(/\D/, "")
  end
  
  def formatted_cnpj
    "#{cnpj[0,2]}.#{cnpj[2,3]}.#{cnpj[5,3]}/#{cnpj[8,4]}-#{cnpj[12,2]}"
  end

  # TODO DRY
  def formatted_registro_junta_comercial_data
    I18n.l(registro_junta_comercial_data)
  end

  def formatted_abertura_cnpj
    I18n.l(abertura_cnpj)
  end
  
end
